Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Careful there are 2 files....
- cnc3040.hal
- # Generated by stepconf 1.1 at Sat Apr 8 18:10:51 2017
- # If you make changes to this file, they will be
- # overwritten when you run stepconf again
- loadrt [KINS]KINEMATICS
- loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
- loadrt hal_parport cfg="0 out"
- setp parport.0.reset-time 2500
- loadrt stepgen step_type=0,0,0
- #============================================================
- #============================================================
- #============================================================
- #============================================================
- # --------------------------------------------------
- # Closed Loop Spindle Control
- # --------------------------------------------------
- # Load Real Time modules
- loadrt encoder num_chan=1
- loadrt pid num_chan=1
- loadrt pwmgen output_type=0
- loadrt not count=1
- # Assign to threads
- addf encoder.update-counters base-thread
- addf encoder.capture-position servo-thread
- addf pid.0.do-pid-calcs servo-thread
- addf pwmgen.update servo-thread
- addf pwmgen.make-pulses base-thread
- # Initialize the encoder (spindle)
- setp encoder.0.position-scale 0.05
- setp encoder.0.counter-mode 1
- # Initialize the PID
- setp pid.0.Pgain 4
- setp pid.0.Igain 9
- setp pid.0.Dgain 3
- setp pid.0.maxoutput 12000
- setp pid.0.maxerrorD 3000
- setp pid.0.maxerrorI 3000
- setp pid.0.maxerror 2000
- setp pid.0.maxcmdD 5000
- setp pid.0.maxcmdDD 2000
- setp pid.0.FF0 1
- setp pid.0.FF1 1
- # setp pid.0.FF2 1
- setp pid.0.enable 1
- setp pid.0.deadband 50
- # Initialize the pwmgen
- setp pwmgen.0.pwm-freq 2000.0
- setp pwmgen.0.scale 12000
- setp pwmgen.0.dither-pwm true
- setp pwmgen.0.offset 0.0
- # Attach the motion.spindle-on to enable the pwmgen and the pid
- net spindle_enable motion.spindle-on => pwmgen.0.enable => pid.0.enable
- # Attach the encoder to the parallel port pin
- net parport_10_in parport.0.pin-10-in => encoder.0.phase-A => encoder.0.phase-Z
- # Attach the encoder to the motion
- net spindle_rev_count encoder.0.position => motion.spindle-revs
- net spindle_index_enable encoder.0.index-enable <=> motion.spindle-index-enable
- # net gmoccapy.spindle_feedback_bar pid.0.feedback
- # Attach the pid to the scale, motion, and sum
- # net pid_feedback pid.0.feedback <= encoder.0.velocity
- net pid_command pid.0.command <= motion.spindle-speed-out
- # Attach the pwmgen to the sum and the parallel port
- net pwmgen_value pwmgen.0.value <= pid.0.output
- net pwmgen_out pwmgen.0.pwm => parport.0.pin-01-out
- #============================================================
- #============================================================
- #============================================================
- #============================================================
- addf parport.0.read base-thread
- addf stepgen.make-pulses base-thread
- addf parport.0.write base-thread
- addf parport.0.reset base-thread
- addf stepgen.capture-position servo-thread
- #addf encoder.capture-position servo-thread
- addf motion-command-handler servo-thread
- addf motion-controller servo-thread
- addf stepgen.update-freq servo-thread
- #net spindle-cmd-rpm => pwmgen.0.value
- #net spindle-on <= motion.spindle-on => pwmgen.0.enable
- #net spindle-pwm <= pwmgen.0.pwm
- #net spindle-cmd-rpm <= motion.spindle-speed-out
- net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
- net spindle-cmd-rps <= motion.spindle-speed-out-rps
- net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
- # net spindle-at-speed => motion.spindle-at-speed
- net spindle-ccw <= motion.spindle-reverse
- #setp encoder.0.position-scale 3.000000
- #setp encoder.0.counter-mode 1
- #net spindle-position encoder.0.position => motion.spindle-revs
- #net spindle-velocity-feedback-rps encoder.0.velocity => motion.spindle-speed-in
- #net spindle-index-enable encoder.0.index-enable <=> motion.spindle-index-enable
- #net spindle-phase-a encoder.0.phase-A
- #net spindle-phase-b encoder.0.phase-B
- #net spindle-index encoder.0.phase-Z
- net probe-in => motion.probe-input
- #net spindle-pwm => parport.0.pin-01-out
- net xstep => parport.0.pin-02-out
- setp parport.0.pin-02-out-reset 1
- net xdir => parport.0.pin-03-out
- net ystep => parport.0.pin-04-out
- setp parport.0.pin-04-out-reset 1
- net ydir => parport.0.pin-05-out
- net zstep => parport.0.pin-06-out
- setp parport.0.pin-06-out-reset 1
- net zdir => parport.0.pin-07-out
- net astep => parport.0.pin-08-out
- setp parport.0.pin-08-out-reset 1
- net adir => parport.0.pin-09-out
- net xenable => parport.0.pin-14-out
- net spindle-ccw => parport.0.pin-16-out
- net spindle-on => parport.0.pin-17-out
- #net spindle-phase-a <= parport.0.pin-10-in
- net home-y <= parport.0.pin-11-in
- net home-z <= parport.0.pin-12-in
- net probe-in <= parport.0.pin-13-in
- net home-x <= parport.0.pin-15-in
- setp stepgen.0.position-scale [JOINT_0]SCALE
- setp stepgen.0.steplen 1
- setp stepgen.0.stepspace 0
- setp stepgen.0.dirhold 36500
- setp stepgen.0.dirsetup 36500
- setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
- net xpos-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd
- net xpos-fb stepgen.0.position-fb => joint.0.motor-pos-fb
- net xstep <= stepgen.0.step
- net xdir <= stepgen.0.dir
- net xenable joint.0.amp-enable-out => stepgen.0.enable
- net home-x => joint.0.home-sw-in
- setp stepgen.1.position-scale [JOINT_1]SCALE
- setp stepgen.1.steplen 1
- setp stepgen.1.stepspace 0
- setp stepgen.1.dirhold 36500
- setp stepgen.1.dirsetup 36500
- setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
- net ypos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
- net ypos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
- net ystep <= stepgen.1.step
- net ydir <= stepgen.1.dir
- net yenable joint.1.amp-enable-out => stepgen.1.enable
- net home-y => joint.1.home-sw-in
- setp stepgen.2.position-scale [JOINT_2]SCALE
- setp stepgen.2.steplen 1
- setp stepgen.2.stepspace 0
- setp stepgen.2.dirhold 36500
- setp stepgen.2.dirsetup 36500
- setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
- net zpos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd
- net zpos-fb stepgen.2.position-fb => joint.2.motor-pos-fb
- net zstep <= stepgen.2.step
- net zdir <= stepgen.2.dir
- net zenable joint.2.amp-enable-out => stepgen.2.enable
- net home-z => joint.2.home-sw-in
- net estop-out <= iocontrol.0.user-enable-out
- net estop-out => iocontrol.0.emc-enable-in
- loadusr -W hal_manualtoolchange
- net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
- net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
- net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
- net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
- ==================================================================================
- ==================================================================================
- ==================================================================================
- ==================================================================================
- ==================================================================================
- ==================================================================================
- ==================================================================================
- ==================================================================================
- ==================================================================================
- ==================================================================================
- ==================================================================================
- postgui_call_list.hal
- # These files are loaded post GUI, in the order they appear
- # Generated by stepconf 1.1 at Sat Apr 8 18:10:51 2017
- # If you make changes to this file, they will be
- # overwritten when you run stepconf again
- source custom_postgui.hal
- # net gmoccapy_spindle_at_speed gmoccapy.spindle_at_speed_led <= motion.spindle-at-speed
- # net gmoccapy_spindle_feedback gmoccapy.spindle_feedback_bar <= encoder.0.velocity
- net encoder_raw_velocity encoder.0.velocity => motion.spindle-speed-in pid.0.feedback gmoccapy.spindle_feedback_bar
- net spindle-at-speed => motion.spindle-at-speed gmoccapy.spindle_at_speed_led
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement